<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="security">
	<h1>Объекты системы безопастности</h1>
	<div class="mainmenuitem">	
		<xsl:apply-templates select="objects" mode="security"/>
	</div>
	
</xsl:template>


<xsl:template match="security" mode="ajax">
	<strong>Пользователи</strong>: &#0160; 
		<xsl:for-each select="objects/users/user">
			<xsl:value-of select="name"/>
			<xsl:if test="not(position()=last())">, </xsl:if>
		</xsl:for-each>
		<br/>
	<strong>Роли</strong>: &#0160; 
		<xsl:for-each select="objects/roles/role">
			<xsl:value-of select="title"/>
			<xsl:if test="not(position()=last())">, </xsl:if>
		</xsl:for-each> 		 	
</xsl:template>

<xsl:template match="objects" mode="security">
	<div id="objects" class="clearfix">
		<div class="scol" id="users">
			<xsl:for-each select="users">
				<xsl:apply-templates select="user" mode="security"/>
			</xsl:for-each>
		</div>
		<div class="scol" id="roles">
			<xsl:for-each select="roles">
				<xsl:apply-templates select="role" mode="security"/>
			</xsl:for-each>		
		</div>
	</div>
	<div id="addform" class="addform">
		<a name="form"></a>
		<div id="addformcontrol">
			<a href="#form" onclick="sShowAddForm('user');" class="adduserlink">Добавить пользователя</a>
			&#0160;
			<a href="#form" onclick="sShowAddForm('role');" class="addrolelink">Добавить роль</a>			
		</div>
		<div id="addformitem">
		</div>
	</div>	
</xsl:template>

<xsl:template match="users" mode="ajax">
	<xsl:apply-templates select="user" mode="security"/>
</xsl:template>

<xsl:template match="roles" mode="ajax">
	<xsl:apply-templates select="role" mode="security"/>
</xsl:template>

<xsl:template match="user" mode="security">
	<div id="user_{login}" class="useritem">
		<div class="control">
			<img src="/i/icons/user_edit.png" class="controlimg" alt="Редактировать" title="Редактировать" onclick="sShowForm('user', '{login}');"/>
			&#0160;
			<img src="/i/icons/user_delete.png" class="controlimg" alt="Удалить" title="Удалить" onclick="sDelete('user', '{login}');"/>
		</div>
		<div>
			<xsl:attribute name="class">
				<xsl:choose>
					<xsl:when test="enable='1'">user_name</xsl:when>
					<xsl:otherwise>user_name_disabled</xsl:otherwise>
				</xsl:choose>
			</xsl:attribute>
			<xsl:value-of select="name"/>
		</div>
		<div class="user_login"><xsl:value-of select="login"/></div>
		<div class="user_mail"><a href="mailto:{mail}"><xsl:value-of select="mail"/></a></div>
	</div>
</xsl:template>

<xsl:template match="role" mode="security">
	<div id="role_{id}" class="roleitem">
		<div class="control">
			<img src="/i/icons/group_edit.png" class="controlimg" alt="Редактировать" title="Редактировать" onclick="sShowForm('role', '{id}');"/>
			&#0160;
			<img src="/i/icons/group_delete.png" class="controlimg" alt="Удалить" title="Удалить" onclick="sDelete('role','{id}');"/>
		</div>
		<div>
			<xsl:attribute name="class">
				<xsl:choose>
					<xsl:when test="enable='1'">role_title</xsl:when>
					<xsl:otherwise>role_title_disabled</xsl:otherwise>
				</xsl:choose>
			</xsl:attribute>
			<xsl:value-of select="title"/>
		</div>
		<div class="role_id"><xsl:value-of select="id"/></div>
	</div>
</xsl:template>

<!--
		Forms
-->

<xsl:template match="userform[@action='Add']" mode="ajax">	
	<h3>Добавить пользователя</h3>
	<form id="formadd" onSubmit="return false;" vmethod="online">
		<div class="clearfix">
			<div class="formiteml">
				<label for="i_login" class="fwlab">Логин</label>
				<input id="i_login" type="text" name="f_login" size="16" maxlength="32" vmethod="callback" vparam="sCheckId" vnotice="Поле должно содержать только буквы и цифры и не совпадать с уже имеющимися идентификаторами!" rel="user"/>					
			</div>
			<div class="formiteml">
				<label for="i_secret" class="fwlab">Пароль</label>
				<input id="i_secret" type="text" name="f_secret" size="16" maxlength="32" vmethod="pattern" vparam="^[a-zA-Z0-9\.]*$" vnotice="Поле должно содержать только буквы и цифры!"/>					
			</div>
		</div>
		<div class="clearfix pdata">
			<div class="formiteml">
				<label for="i_name" class="fwlab">Имя</label><br/>
				<input id="i_name" type="text" name="f_name" size="26" maxlength="128" vmethod="pattern" vparam="string" vnotice="Поле должно быть заполнено!"/>					
			</div>
			<div class="formiteml">
				<label for="i_mail" class="fwlab">Почта</label><br/>
				<input id="i_mail" type="text" name="f_mail" size="26" maxlength="128" vmethod="pattern" vparam="mail" vnotice="Должен быть корректный электронный адрес!"/>					
			</div>
		</div>
		<div class="formitem">
			<input type="checkbox" id="i_enable" name="f_enable" checked="checked"/>
			<label for="i_enable">Пользователь активен и имеет доступ к системе</label>
		</div>
		<div class="formitem">
			<label for="i_dusecase" class="fwlab">Функция по умолчанию</label>
			<select id="i_dusecase" name="f_dusecase" size="1" vmethod="optional">
				<xsl:for-each select="usecasepool/usecaseset">
					<optgroup label="{@title}">
						<xsl:for-each select="usecase">
							<xsl:variable name="type" select="@type"/>
							<option value="{.}">
								<xsl:choose>
									<xsl:when 
										test="string-length(../../../usecases/usecase[usecase=$type]/title) > 0">
										<xsl:value-of select="../../../usecases/usecase[usecase=$type]/title"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:value-of select="."/>
									</xsl:otherwise>
								</xsl:choose>
							</option>
						</xsl:for-each>
					</optgroup>
				</xsl:for-each>
			</select>								
		</div>
		<div class="formitem">
			<label class="fwlab">Роли пользователя в системе:</label>
			<div class="boxlist">
				<ul>
					<xsl:for-each select="roles/role">					
						<li>
							<xsl:if test="enable='True'">
								<input type="checkbox" name="f_roles" id="i_roles_{id}" value="{id}"/>
								<label for="i_roles_{id}"><xsl:value-of select="title"/></label>
							</xsl:if>	
							<xsl:if test="enable='False'">
								<xsl:value-of select="title"/>
							</xsl:if>	
						</li>
					</xsl:for-each>
				</ul>
			</div>
		</div>
		<div class="clearfix">		
			<div class="formbutton" style="float: left;">
				<input type="button" class="addbutton" value="Добавить" onclick="sAdd('user');"/>
			</div>
			<div class="formbutton" style="float: right;">
				<input type="button" class="cancelbutton" value="Отменить" onclick="sCancelAdd();"/>
			</div>
		</div>
	</form>		
</xsl:template>

<xsl:template match="userform[@action='Commit']" mode="ajax">
	<h3>Пользователь <xsl:value-of select="object/@id"/></h3>			
	<form id="form-user-{object/@id}" onSubmit="return false;" vmethod="online">
		<input type='hidden' name='id' value='{object/@id}'/>
		<div class="formitem">
			<label for="i_login" class="fwlab">Логин</label>
			<input id="i_login" type="text" name="f_login" size="14" maxlength="32" vmethod="callback" vparam="sCheckId" vnotice="Поле должно содержать только буквы и цифры и не совпадать с уже имеющимися идентификаторами!" rel="user" value='{object/value/item/login}' previd='{object/@id}'/>					
		</div>
		<div class="formitem">
			<label for="i_secret" class="fwlab">Пароль</label>
			<input id="i_secret" type="text" name="f_secret" size="14" maxlength="32" vmethod="pattern" vparam="^[a-zA-Z0-9\.]*$" vnotice="Поле должно содержать только буквы и цифры!" value=''/>					
		</div>
		<div class="formitem">
			<label for="i_name" class="fwlab">Имя</label>
			<input id="i_name" type="text" name="f_name" size="18" maxlength="128" vmethod="pattern" vparam="string" vnotice="Поле должно быть заполнено!" value="{object/value/item/name}"/>					
		</div>
		<div class="formitem">
			<label for="i_mail" class="fwlab">Почта</label>
			<input id="i_mail" type="text" name="f_mail" size="17" maxlength="128" vmethod="pattern" vparam="mail" vnotice="Должен быть корректный электронный адрес!" value="{object/value/item/mail}"/>					
		</div>
		<div class="formitem">
			<input type="checkbox" id="i_enable" name="f_enable">
				<xsl:if test="object/value/item/enable='True'">
					<xsl:attribute name="checked">checked</xsl:attribute>
				</xsl:if>
			</input>
			<label for="i_enable">Пользователь активен</label>
		</div>
		<div class="formitem">
			<xsl:variable name="dusecase" select="object/value/item/dusecase"/>				
			<label for="i_dusecase" class="fwlab">Функция по умолчанию</label>
			<select id="i_dusecase" name="f_dusecase" size="1" vmethod="optional" style='width: 100%;'>
				<xsl:for-each select="usecasepool/usecaseset">
					<optgroup label="{@title}">
						<xsl:for-each select="usecase">
							<xsl:variable name="type" select="@type"/>
							<option value="{.}">
								<xsl:if test=".=$dusecase">
									<xsl:attribute name="selected">selected</xsl:attribute>
								</xsl:if>
								<xsl:choose>
									<xsl:when 
										test="string-length(../../../usecases/usecase[usecase=$type]/title) > 0">
										<xsl:value-of select="../../../usecases/usecase[usecase=$type]/title"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:value-of select="."/>
									</xsl:otherwise>
								</xsl:choose>
							</option>
						</xsl:for-each>
					</optgroup>
				</xsl:for-each>
			</select>								
		</div>
		<div class="formitem">
			<label class="fwlab">Роли пользователя в системе:</label>
			<div class="boxlist">
				<ul>
					<xsl:for-each select="roles/role">
						<xsl:variable name="crole" select="id"/>					
						<li>
							<xsl:if test="enable='True'">
								<input type="checkbox" name="f_roles" id="i_roles_{id}" value="{id}">									
									<xsl:for-each select="../../object/roles_list/item">
										<xsl:if test=".=$crole">
											<xsl:attribute name="checked">checked</xsl:attribute>
										</xsl:if>
									</xsl:for-each>
								</input>
								<label for="i_roles_{id}"><xsl:value-of select="title"/></label>
							</xsl:if>	
							<xsl:if test="enable='False'">
								<xsl:value-of select="title"/>
							</xsl:if>	
						</li>
					</xsl:for-each>
				</ul>
			</div>
		</div>
		<div class="clearfix">		
			<div class="formbutton" style="float: left;">
				<input type="button" class="commitbutton" value="Применить" onclick="sCommit('user','{object/@id}');"/>
			</div>
			<div class="formbutton" style="float: right;">
				<input type="button" class="cancelbutton" value="Отменить" onclick="sCancel('user');"/>
			</div>
		</div>
	</form>		
</xsl:template>

<xsl:template match="roleform[@action='Add']" mode="ajax">	
	<h3>Добавить роль</h3>
	<form id="formadd" onSubmit="return false;" vmethod="online">
		<div class="clearfix">
			<div class="formiteml">
				<label for="i_id" class="fwlab">Идентификатор</label>
				<input id="i_id" type="text" name="f_id" size="16" maxlength="64" vmethod="callback" vparam="sCheckId" vnotice="Поле должно содержать только буквы и цифры и не совпадать с уже имеющимися идентификаторами!" rel="role"/>					
			</div>
			<div class="formiteml">
				<label for="i_title" class="fwlab">Название</label>
				<input id="i_title" type="text" name="f_title" size="16" maxlength="128" vmethod="pattern" vparam="string" vnotice="Поле должно быть заполнено!"/>					
			</div>
		</div>
		<div class="formitem">
			<input type="checkbox" id="i_enable" name="f_enable" checked="checked"/>
			<label for="i_enable">Роль активна</label>
		</div>		
		<div class="formitem">
			<label class="fwlab">Доступные функции:</label>
			<div class="boxlist">
				<ul>
					<xsl:for-each select="usecasepool/usecaseset">
						<li><span class="ucsettitle"><xsl:value-of select="@title"/></span>
							<ul class="uclist">
								<xsl:for-each select="usecase">
									<xsl:variable name="type" select="@type"/>
									<li>
										<input type="checkbox" name="f_usecases" id="i_usecases_{@type}" value="{.}"/>											
										<label for="i_usecase_{@type}">
											<span id='uc_{@type}' ondblclick="sRenameUsecaseForm('{@type}');">	
												<xsl:choose>
													<xsl:when 
														test="string-length(../../../usecases/usecase[usecase=$type]/title) > 0">
														<xsl:value-of select="../../../usecases/usecase[usecase=$type]/title"/>
													</xsl:when>
													<xsl:otherwise>
														<xsl:value-of select="."/>
													</xsl:otherwise>
												</xsl:choose>
											</span>
										</label>
									</li>
								</xsl:for-each>
							</ul>
						</li>
					</xsl:for-each>
				</ul>
			</div>
		</div>
		<div class="clearfix">		
			<div class="formbutton" style="float: left;">
				<input type="button" class="addbutton" value="Добавить" onclick="sAdd('role');"/>
			</div>
			<div class="formbutton" style="float: right;">
				<input type="button" class="cancelbutton" value="Отменить" onclick="sCancelAdd();"/>
			</div>
		</div>
	</form>		
</xsl:template>

<xsl:template match="roleform[@action='Commit']" mode="ajax">	
	<h3>Роль <xsl:value-of select="object/@id"/></h3>
	<form id="form-role-{object/@id}" onSubmit="return false;" vmethod="online">
		<input type='hidden' name='id' value='{object/@id}'/>
		<div class="formitem">
			<label for="i_id" class="fwlab">Идентификатор</label>
			<input id="i_id" type="text" name="f_id" size="10" maxlength="64" vmethod="callback" vparam="sCheckId" vnotice="Поле должно содержать только буквы и цифры и не совпадать с уже имеющимися идентификаторами!" rel="role" value="{object/value/item/id}" previd="{object/value/item/id}"/>					
		</div>
		<div class="formitem">
			<label for="i_title" class="fwlab">Название</label>
			<input id="i_title" type="text" name="f_title" size="12" maxlength="128" vmethod="pattern" vparam="string" vnotice="Поле должно быть заполнено!" value="{object/value/item/title}"/>					
		</div>
		<div class="formitem">
			<input type="checkbox" id="i_enable" name="f_enable">
				<xsl:if test="object/value/item/enable='True'">
					<xsl:attribute name="checked">checked</xsl:attribute>
				</xsl:if>
			</input>
			<label for="i_enable">Роль активна</label>
		</div>		
		<div class="formitem">
			<label class="fwlab">Доступные функции:</label>
			<div class="boxlist">
				<ul>
					<xsl:for-each select="usecasepool/usecaseset">
						<li><span class="ucsettitle"><xsl:value-of select="@title"/></span>
							<ul class="uclist">
								<xsl:for-each select="usecase">
									<xsl:variable name="type" select="@type"/>
									<xsl:variable name="name" select="."/>
									<li>
										<input type="checkbox" name="f_usecases" id="i_usecases_{@type}" value="{.}">
											<xsl:for-each select="../../../object/usecases_list/item">
												<xsl:if test=".=$name">
													<xsl:attribute name="checked">checked</xsl:attribute>
												</xsl:if>
											</xsl:for-each>										
										</input>
										<label for="i_usecase_{@type}">
											<span id='uc_{@type}' ondblclick="sRenameUsecaseForm('{@type}');">	
												<xsl:choose>
													<xsl:when 
														test="string-length(../../../usecases/usecase[usecase=$type]/title) > 0">
														<xsl:value-of select="../../../usecases/usecase[usecase=$type]/title"/>
													</xsl:when>
													<xsl:otherwise>
														<xsl:value-of select="."/>
													</xsl:otherwise>
												</xsl:choose>
											</span>
										</label>
									</li>
								</xsl:for-each>
							</ul>
						</li>
					</xsl:for-each>
				</ul>
			</div>
		</div>
		<div class="clearfix">		
			<div class="formbutton" style="float: left;">
				<input type="button" class="commitbutton" value="Применить" onclick="sCommit('role', '{object/@id}');"/>
			</div>
			<div class="formbutton" style="float: right;">
				<input type="button" class="cancelbutton" value="Отменить" onclick="sCancel('role');"/>
			</div>
		</div>
	</form>		
</xsl:template>

</xsl:stylesheet>
